#include <iostream>
#include <cstdio> 
#include <string>
using namespace std;

int map[1005][1005];
int flag[1005];
int f[1005];

int find(int x)
{
	if(f[x]!=x)
		f[x]=find(f[x]);
	return f[x];
}

void make(int a,int b)
{
	int f1=find(a);
	int f2=find(b);
	if(f1!=f2)
		f[f2]=f1;
}
void check(int a,int b)
{
	int f1=find(a);
	int f2=find(b);
	if(f1==f2) cout<<"SUCCESS"<<endl;
	else cout<<"FALL"<<endl;
}
int main()
{
	int n,d;
	cin>>n>>d;
	memset(map,0,sizeof(map));
	memset(flag,0,sizeof(flag));
	for(int i=1;i<=n;i++) f[i]=i;
	int x[1005],y[1005];
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])<=d*d){
				map[i][j]=1;
				map[j][i]=1;
			}
		}
	}
	char order[2];
	while(scanf("%s",&order)!=EOF){
		if(strcmp(order,"O")==0){
			int temp;
			scanf("%d",&temp);
			flag[temp]=1;
			for(int i=1;i<=n;i++){
				if(map[temp][i]==1&&flag[i]){
					make(temp,i);
				} 
			}
		}
		else{
			int a,b;
			cin>>a>>b;
			check(a,b);
		}
	}
	return 0;
}
